Heterogeneous compute systems are commonly used to support many business and/or engineering application solutions. Typically, a business will utilize a set of applications executing on a variety of client workstations and servers to provide an entire business solution. A problem arises when the compute power requirements of an application (e.g., software program) exceed the compute power available in the hardware of the client workstation. In such situations, applications run inefficiently (i.e., too slow) or not at all, thereby reducing or eliminating the value provided by the application.
Efforts to overcome the above-noted problems include providing applications that have a client interface (e.g., web browser, etc.) to a server application. In this way, the server manages the data and performs compute intensive tasks. Alternatively, systems may operate on batch scheduled jobs that are submitted from the client workstation to the server and scheduled for processing across a grid or cluster connected network of servers. In both of these cases, the entire application is dispatched (e.g., ported) to the server (or various server nodes), processed, and then returned to the client workstation. Because the entire application is dispatched, the granularity of compute tasks is very coarse and, hence, inefficient.
In some cases, the time involved in dispatching the entire application to a server can render the above-noted solutions unacceptable. For example, dispatching the entire application to a server for processing is simply not feasible for applications that are primarily designed to run on a workstation, driven by an interactive user, and require highly compute intensive tasks (e.g., physically based modeling, image processing, 3D geometric modeling and rendering, etc.). In these cases, instead of sending the entire application to a server, the client workstation may be provided with accelerator hardware of its own (e.g., accelerator boards, graphics adapters, etc.) However, it can be cost prohibitive to equip numerous client workstations with such accelerator hardware. Moreover, software development normally outpaces that of hardware, and new applications that require even more compute power often quickly render expensive accelerator hardware obsolete or an accelerator hardware may not exist in a workstation form factor.
Additionally, some applications reside and execute on a server, but have components that benefit or require acceleration via specialized system accelerators that are not present on the server. In this case, the server faces the same problems described above with respect to client workstations: an application that requires more compute power than is locally available.
Accordingly, there exists a need in the art to overcome the deficiencies and limitations described hereinabove.